import { Inject, Controller, Get, Query, Redirect, Post, Body } from '@midwayjs/core';
import { Context } from '@midwayjs/koa';
import { UserService } from '../service/user.service';
import { UserInfoEntity } from '../entity/info'
import { InfoDto } from '../dto/info'

/**
 * 装饰器使用
 * @Controller 控制器 , 注册为处理 HTTP 请求的组件 user 表示路径前缀
 * 
 * @inject 属性装饰器，用于将依赖注入到类的属性中
 * 
 * 
 * @Get 用于处理 GET 请求
 * 
 * @Redirect 重定向
 * 
 * @Post 用于处理 POST 请求
 * 
 * @Body(key?) 用于获取请求体 key 获取单个 , 不传获取全部 
 * 
 * @Query 用于获取请求参数
 */
@Controller('/user')
export class APIController {
  @Inject()
  ctx: Context;
  
  entity: UserInfoEntity

  @Inject()
  userService: UserService;
  

  @Get('/')
  @Redirect('/user/user_v1')
  async(){}

  @Get('/user_v1',{summary:'获取用户信息'})
  async getUser(@Query('id') id) {
    const user = await this.userService.getUser({ id });
    return { success: true, message: 'OK', data: user };
  }
  @Post('/user_v1',{summary:'添加用户'})
  async addUser(@Body() user:InfoDto) {
    await this.userService.createUser(user);
    return { success: true, message: 'OK', data: user };
  }
}
